﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AcadPos.Entity;
using System.Data;
using AcadPosApp.Utilidades;

namespace AcadPosApp.ControlarMatricula
{
    public partial class SolicitacaoCertificado : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                carregarEstados();
                ddlEstadoPesquisa.SelectedValue = "1";
                pnlPesquisa.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultar.ClientID + "')");
            }
            if (gvwMatriculasAluno.Visible == true && gvwMatriculasAluno.SelectedIndex > -1)
            {
                pnlSolicitacoes.Visible = true;
            }
            else
            {
                pnlSolicitacoes.Visible = false;
            }
        }

        [System.Web.Script.Services.ScriptMethod()]
        [System.Web.Services.WebMethod]
        public static List<string> GetProfessores(string prefixText)
        {
            DataTable dtDados = ControlClass.CNProfissional.listarProfissionais(prefixText);
            List<string> professores = new List<string>();
            for (int i = 0; i < dtDados.Rows.Count; i++)
            {
                professores.Add(string.Format("{0} - {1}", dtDados.Rows[i]["ID_PROFISSIONAL"].ToString().PadLeft(3, '0'), dtDados.Rows[i]["NOME"].ToString().ToUpper()));
            }
            return professores;
        }

        private void carregarEstados()
        {
            ddlEstadoPesquisa.DataSource = ControlClass.CNEstado.listaTodosEstados();
            ddlEstadoPesquisa.DataTextField = "ESTADO";
            ddlEstadoPesquisa.DataValueField = "ID_ESTADO";
            ddlEstadoPesquisa.DataBind();
        }

        protected void ddlEstadoPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            pnlMatriculasAluno.Visible = false;
            gvwPesquisa.Visible = false;
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            gvwPesquisa.Visible = true;
            pnlMatriculasAluno.Visible = false;
            pnlSolicitacoes.Visible = false;
            pnlIncluirSolicitacao.Visible = false;
            carregarAlunos();
        }

        private void carregarAlunos()
        {
            string pNome = TxtPesquisa.Text;
            int idEstado = Convert.ToInt32(ddlEstadoPesquisa.SelectedValue);
            gvwPesquisa.DataSource = ControlClass.CNAluno.listarAlunosXEstado(pNome, idEstado);
            gvwPesquisa.DataBind();
            gvwPesquisa.SelectedIndex = -1;
        }

        protected void gvwPesquisa_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwPesquisa.PageIndex = e.NewPageIndex;
            carregarAlunos();
        }

        protected void gvwPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregaMatriculasAluno();
            pnlSolicitacoes.Visible = false;
        }

        private void carregaMatriculasAluno()
        {
            pnlMatriculasAluno.Visible = true;
            Matricula matricula = new AcadPos.Entity.Matricula();
            matricula.MatriculaAluno = Convert.ToInt32(gvwPesquisa.DataKeys[gvwPesquisa.SelectedIndex]["MATRICULA"].ToString());
            DataTable dtMatriculas = ControlClass.CNMatricula.listaMatriculasAluno(matricula);
            DataView dtMatriculasConcluidas = dtMatriculas.AsDataView();
            dtMatriculasConcluidas.RowFilter = "SITUACAO = 'Concluída'";
            gvwMatriculasAluno.DataSource = dtMatriculasConcluidas.ToTable();
            gvwMatriculasAluno.DataSource = dtMatriculas;
            gvwMatriculasAluno.DataBind();
            gvwMatriculasAluno.SelectedIndex = -1;
        }

        protected void gvwMatriculasAluno_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwMatriculasAluno.PageIndex = e.NewPageIndex;
            carregaMatriculasAluno();
            pnlSolicitacoes.Visible = true;
        }

        protected void btnIncluir_Click(object sender, EventArgs e)
        {
            if (gvwMatriculasAluno.SelectedIndex >= 0)
            {
                pnlIncluirSolicitacao.Visible = true;
                TrustX.Util.UtilForm.LimparCampos(pnlIncluirSolicitacao);
                TxtConclusaoCurso.Text = gvwMatriculasAluno.SelectedDataKey["DATA_CONCLUSAO_CURSO"].ToString().Substring(0, 10);
                int pMatricula = Convert.ToInt32(gvwPesquisa.DataKeys[gvwPesquisa.SelectedIndex]["MATRICULA"].ToString());
                if (ControlClass.CNMatricula.isInadimplente(pMatricula))
                    btnConfirmar.OnClientClick = "return confirm('Foram detectadas pendências financeiras! Tem certeza que deseja solicitar o certificado mesmo assim?');";
                else btnConfirmar.OnClientClick = string.Empty;
            }
            else
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Favor selecione a matrícula do aluno!")), true);
            }
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            pnlIncluirSolicitacao.Visible = false;
        }

        protected void gvwSolicitacoes_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                if (e.CommandName == "Solicitacao")
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Em desenvolvimento...")), true);
                }
                else if (e.CommandName == "Certificado")
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Aguardando documentação...")), true);
                }
            }
            catch (Exception)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
            }
        }

        protected void gvwMatriculasAluno_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregarSolicitacoes();
            pnlSolicitacoes.Visible = true;
        }

        private void carregarSolicitacoes()
        {
            int idMatricula = Convert.ToInt32(gvwMatriculasAluno.SelectedDataKey["ID_MATRICULA"]);
            gvwSolicitacoes.DataSource = ControlClass.CNMatricula.getSolicitacoesCertificado(idMatricula);
            gvwSolicitacoes.DataBind();
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                int idMatricula = Convert.ToInt32(gvwMatriculasAluno.SelectedDataKey["ID_MATRICULA"]);
                DateTime dataConclusao = Convert.ToDateTime(TxtConclusaoCurso.Text);
                string tituloTCC = TxtTituloTCC.Text;
                int idProfissional = Convert.ToInt32(TxtProfOrientador.Text.Substring(0, 3));
                DateTime dataImpresso = Convert.ToDateTime(TxtDataCertificadoPronto.Text);
                DateTime dataPronto = Convert.ToDateTime(TxtDataCertificadoPronto.Text);
                DateTime dataEntregue = Convert.ToDateTime(TxtDataEntregaCertificado.Text);
                if (ControlClass.CNMatricula.solicitarCertificado(idMatricula, dataConclusao, tituloTCC, idProfissional, dataImpresso, dataPronto, dataEntregue))
                {
                    pnlIncluirSolicitacao.Visible = false;
                    carregarSolicitacoes();
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoInserir, "")), true);
                }
                else
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.ErroSimples, "")), true);
                }
            }
            catch (Exception)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
            }
        }
    }
}